#ifndef __LIST_NODE__H
#define __LIST_NODE__H 
#include <iostream>

typedef int Rank;		//秩

#define ListNodePosi(T)		ListNode<T>*		//列表节点位置

template <typename T> class ListNode
{
private:
	T data;
	ListNodePosi(T) pred;
	ListNodePosi(T) succ;

public:
	ListNode() {}		//针对header和trailer的构造
	ListNode(T e,ListNodePosi(T) p = NULL,ListNodePosi(T) s = NULL)
		: data(e),pred(p),succ(s){}		//默认构造

	ListNodePosi(T)	insertAsPred(T const &e);
	ListNodePosi(T)	insertAsSucc(T const &e);
};

#endif
